#!/usr/bin/env python3
# -*- encoding utf-8 -*-

'''
@文件: convert2eps.py
@时间: 2023-08-10 14:57:03
@作者: KRISNAT TANG
@版本: 0.0.0
@邮箱: krisnat.ton@gmail.com
@版权所有: (C)Copyright 2023, KRISNAT
@描述: 将输入文件夹下面的图片转换为指定格式的图片并存储在指定文件夹中
'''


# 引入标准库
import os
import logging
from pathlib import Path

import matplotlib.pyplot as plt
# 引入第三方库
from tqdm import tqdm
from PIL import Image


# 一些预设或者全局函数等
logging.basicConfig(format="%(message)s", level=logging.INFO, encoding="utf-8")  # python日志管理工具的预设


def convert2eps(source_dir: str = "./", des_dir: str = None, des_suffix: str = "eps"):
    """将source_dir文件夹下面的所有指定格式的图片转换为同名的eps图片, 并保存在des_dir文件下面"""
    if des_dir is None:
        des_dir = des_suffix
        if not os.path.exists(path=Path(des_dir)):
            os.makedirs(name=Path(des_dir))

    img_suffixes = ["jpg", "png"]  # 需要转换成eps的图片格式
    # 检查source_dir及其中的图片
    if not os.path.exists(path=source_dir):
        logging.info("您输入的图片文件夹源地址不存在!")
        os._exit(0)
    else:
        img_names = [file for file in os.listdir(path=source_dir) if file.endswith(img_suffixes[0]) or file.endswith(img_suffixes[1])]
        img_num = len(img_names)
        if img_num == 0:
            logging.info("夹源地址不存在待转换图片!")
            os._exit(0)
        
    with tqdm(total=img_num, unit="img", leave=True, colour="red") as pro_bar:
        pro_bar.set_description_str(f"转换为 {des_suffix}")
        for img_name in img_names:
            img = Image.open(fp=Path(source_dir, img_name))
            des_addr = Path(des_dir, img_name.split(".")[0]+"." + "eps")
            plt.imshow(img)
            foo_fig = plt.gcf()
            plt.xticks([])  # 去掉x轴
            plt.yticks([])  # 去掉y轴
            plt.axis('off')
            foo_fig.savefig(fname=des_addr, format='eps',dpi=2000)
            pro_bar.update(1)


if __name__ == "__main__":
    convert2eps(source_dir="./")
